<script>

/*  得到数组中所有的子数组之和  

    1. 遍历上一次数组，在每一个成员中添加一个新元素，最终返回一个新的间接数组
    2. 将间接数组和当前数组合并成一个最新的数组

    时间复杂度: O(2^n)
    空间复杂度: O(2^n)
*/
function allSubsets(arr){
    let res = [[]];
    for(let i = 0; i < arr.length; i++){
        const tempRes = res.map(subset => {
            const one = subset.slice();     // 拷贝数组
            one.push(arr[i]);       // 压入新的元素    
            return one;
        })
        console.log(tempRes);
        res = res.concat(tempRes);
    }
    return res;
}
let res = allSubsets([1,2,3]);
console.log(res);

</script>

